home *** CD-ROM | disk | FTP | other *** search
- #pragma once
-
- #include <SSTypes.h>
- #include <Receiver.h>
-
- #ifndef NEW
- #define NEW new
- #endif
- #include <DArray.h>
-
-
- class SoundPlayer
- {
- public:
- SoundPlayer(OSErr& err);
- ~SoundPlayer();
-
- void PlaySnd(Handle lockedSndHandle,long length,Boolean loopQ);
-
- enum { kNumChannels = 3};
- enum { kBufferSize = 1024};
-
- protected:
- struct Entry;
-
- OSErr InitEntryList();
-
- static pascal OSErr _ReadProc(void* buffer,long length,long refCon,
- SSCompletionProc completion,long completionData);
- void ReadProc(Entry* entry,void* buffer,long length,SSCompletionProc proc,long completionData);
-
- static pascal void _CancelProc(long refCon,SSCompletionProc ioCompletion,long completionData);
- void CancelProc(Entry* entry,SSCompletionProc ioCompletion,long completionData);
-
- void DoRead(Entry* entry);
- struct Entry
- {
- SReceiver* receiver;
-
- void* readBuffer;
- long readLength;
- long readPos;
- SSCompletionProc readCompletion;
- long readCompletionData;
-
- Ptr curPlay;
- long curSize;
- long curPos;
- Boolean loopQ;
-
- SoundPlayer* obj;
- };
-
-
- DArray<Entry> fReceiverList;
-
-
- };
-
-